#include <stdio.h>
#include <unistd.h>
int val = 100;

int main() {
    printf("父进程在运行, pid: %d\n", getpid());

    pid_t id = fork();
    if(id < 0) {
        perror("fork");
        return 1;
    }else if(id == 0) // 子进程
    {
        printf("我是一个子进程, 我的pid是: %d, 我的ppid是: %d, val是: %d\n", getpid(), getppid(), val);
        sleep(5);
        while(1) {
            sleep(1);
            printf("子进程修改了全局变量: %d -> %d\n", val, val + 1);
            val++;
            printf("我是一个子进程, 我的pid是: %d, 我的ppid是: %d, val是: %d\n", getpid(), getppid(), val); // 这里的值改变了就是我们的修改值
        }
    }else // 当前这个是我们的父进程 
    {
        while (1) {
            sleep(1);
            printf("我是一个父进程, 我的pid是: %d, 我们的ppid是: %d, val是: %d\n", getpid(), getppid(), val); // 这里我们的值没有发生什么改变
        }
    }
    return 0;
}//我们这里主要是因为发生了写时拷贝